/* 
类类型: 实现接口
1. 一个类可以实现多个接口
2. 一个接口可以继承多个接口

*/
(function () {
  interface Alarm {
    alert(): void
  }

  interface Light {
    lightOn(): void
    lightOff(): void
  }

  class Car implements Alarm, Light {
    alert(): void {
      console.log('alert')
    }
    
    lightOn(): void {
      console.log('lightOn')
      
    }
    
    lightOff(): void {
      console.log('lightOff')
    }
  }

  const c: Car = new Car()
  c.alert()
  c.lightOn()
  c.lightOff()
  // c.lightOff2()  // error


  interface LightableAlarm extends Alarm, Light {

  }

  class Car2 implements LightableAlarm {
    alert(): void {
      console.log('alert2')
    }
    
    lightOn(): void {
      console.log('lightOn2')
      
    }
    
    lightOff(): void {
      console.log('lightOff2')
    }
  }
})()